<template>
  <view class="container">
    <view class="form-wrapper">
      <text class="title">注册</text>

      <!-- 用户名 -->
      <input 
        class="input-item" 
        type="text" 
        placeholder="请输入用户名" 
        v-model="form.username" 
        placeholder-class="placeholder-style"
      />

      <!-- 昵称（新增） -->
      <input 
        class="input-item" 
        type="text" 
        placeholder="请输入昵称" 
        v-model="form.nickname" 
        placeholder-class="placeholder-style"
      />

      <!-- 手机号（新增） -->
      <input 
        class="input-item" 
        type="number" 
        placeholder="请输入手机号" 
        v-model="form.mobile" 
        placeholder-class="placeholder-style"
      />

      <!-- 邮箱（新增） -->
      <input 
        class="input-item" 
        type="text" 
        placeholder="请输入邮箱" 
        v-model="form.email" 
        placeholder-class="placeholder-style"
      />

      <!-- 密码 -->
      <input 
        class="input-item" 
        type="password" 
        placeholder="请输入密码（至少6位）" 
        v-model="form.password" 
        placeholder-class="placeholder-style"
      />

      <!-- 确认密码 -->
      <input 
        class="input-item" 
        type="password" 
        placeholder="请确认密码" 
        v-model="form.confirmPassword" 
        placeholder-class="placeholder-style"
      />

      <!-- 注册按钮 -->
      <button 
        class="btn register-btn" 
        type="primary" 
        @click="handleRegister"
        :loading="isLoading"
      >
        注册
      </button>

      <!-- 登录链接 -->
      <view class="link-group">
        <text class="link-text">已有账号？</text>
        <navigator 
          url="/pages/login/login" 
          class="nav-link"
        >
          去登录
        </navigator>
      </view>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      // 新增：nickname、mobile、email字段
      form: {
        username: '',     
        nickname: '',     // 新增：昵称
        mobile: '',       // 新增：手机号
        email: '',        // 新增：邮箱
        password: '',     
        confirmPassword: ''
      },
      isLoading: false 
    };
  },
  methods: {
    handleRegister() {
      // 1. 表单验证（新增：昵称、手机号、邮箱验证）
      const { username, nickname, mobile, email, password, confirmPassword } = this.form;

      // 用户名验证
      if (!username.trim()) {
        return this.showToast('请输入用户名');
      }

      // 昵称验证（新增）
      if (!nickname.trim()) {
        return this.showToast('请输入昵称');
      }

      // 手机号验证（新增：11位数字，以1开头）
      const mobileReg = /^1[3-9]\d{9}$/;
      if (!mobileReg.test(mobile)) {
        return this.showToast('请输入正确的手机号');
      }

      // 邮箱验证（新增：符合邮箱格式）
      const emailReg = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
      if (!emailReg.test(email)) {
        return this.showToast('请输入正确的邮箱');
      }

      // 密码验证
      if (password.length < 6) {
        return this.showToast('密码长度至少6位');
      }

      // 确认密码验证
      if (password !== confirmPassword) {
        return this.showToast('两次密码输入不一致');
      }

      // 2. 开启加载状态
      this.isLoading = true;

      // 3. 调用云函数（新增：传递nickname、mobile、email字段）
      uniCloud.callFunction({
        name: 'addUser', // 云函数名称
        data: {
          username: this.form.username,
          nickname: this.form.nickname,    // 新增：传递昵称
          mobile: this.form.mobile,        // 新增：传递手机号
          email: this.form.email,          // 新增：传递邮箱
          password: this.form.password
        },
        success: (e) => {
          console.log("----------执行添加操作----------");
          console.log(e.result); // 打印返回数据
          this.isLoading = false;
          
          // 提示注册成功
          uni.showToast({
            title: '注册成功',
            duration: 2000,
            icon: 'success'
          });

          // 注册成功后跳转回上一页
          setTimeout(() => {
            uni.navigateBack({ delta: 1 });
          }, 1000);
        },
        fail: (err) => {
          this.isLoading = false;
          this.showToast('注册失败，请稍后重试');
          console.error('注册失败：', err);
        }
      })
    },

    showToast(title, icon = 'none') {
      uni.showToast({
        title,
        icon,
        duration: 2000
      });
    }
  }
};
</script>

<style scoped>
.container {
  display: flex;
  justify-content: center;
  padding-top: 100rpx;
  padding-bottom: 120px;
  background-color: #f5f5f5;
  min-height: 100vh;
  box-sizing: border-box;
}

.form-wrapper {
  width: 90%;
  max-width: 500rpx;
  background-color: #fff;
  padding: 60rpx 40rpx;
  border-radius: 16rpx;
  box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.05);
}

.title {
  display: block;
  text-align: center;
  font-size: 36rpx;
  font-weight: bold;
  color: #333;
  margin-bottom: 60rpx;
}

.input-item {
  width: 100%;
  height: 90rpx;
  padding: 0 20rpx;
  margin-bottom: 30rpx;
  border: 1px solid #eee;
  border-radius: 8rpx;
  font-size: 28rpx;
  box-sizing: border-box;
}

.placeholder-style {
  color: #999;
}

.btn {
  width: 100%;
  height: 90rpx;
  line-height: 90rpx;
  font-size: 30rpx;
  border-radius: 8rpx;
  margin-bottom: 40rpx;
}

.register-btn {
  background-color: #007aff;
}
.register-btn:active {
  background-color: #0066cc;
}

.link-group {
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 26rpx;
}

.link-text {
  color: #666;
}

.nav-link {
  color: #007aff;
  margin-left: 10rpx;
  text-decoration: none;
}
</style>